在前幾天練完基本的指標與 malloc 之後,來找一題能用指標操作陣列、同時又不會太複雜的練習。
這題 LeetCode 1431 — Kids With the Greatest Number of Candies 剛好很適合,因為它需要用迴圈找出最大值,並且用指標操作結果陣列。雖然看起來簡單,但非常能穩固「如何用指標遍歷陣列」的概念。
💡 題目說明
給定一個整數陣列 candies,其中每個元素代表某位小孩的糖果數量,還有一個整數 extraCandies。
你要回傳一個布林陣列,表示每位小孩在拿到額外糖果後,是否能擁有「全場最多」的糖果。
範例 輸入:candies = [2,3,5,1,3], extraCandies = 3 輸出:[true,true,true,false,true]
🧠 解題思路
先用一個變數 maxCandies 找出目前的最大糖果數
建立一個布林陣列(使用 malloc 分配記憶體)
使用指標遍歷 candies,每個小孩加上 extraCandies 後與最大值比較
若達到或超過 maxCandies,則對應結果設為 true,否則為 false
✨ 學習心得
這題讓我熟悉了如何透過指標操作陣列內容,例如 *(candies + i) 比起 candies[i] 更能體會記憶體位移的原理,而且在實作過程中我也理解到 malloc 不只是分配空間而已,更代表著「記憶體掌控權」的開端。這題雖然邏輯不難,但卻是從「陣列」邁向「指標運算」的絕佳橋樑。